home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / turcbook.lzh / IBMPC.C < prev    next >
Text File  |  1988-02-08  |  2KB  |  104 lines

  1. /* ---- pg 33 --------------- ibmpc.c ----------------------- */
  2. #pragma inline
  3. #include <dos.h>
  4. static union REGS rg;
  5.  
  6. /* --------------- position the cursor ------------------------*/
  7. void cursor(int x, int y)
  8. {
  9.   rg.x.ax = 0x0200;
  10.   rg.x.bx = 0;
  11.   rg.x.dx = ((y << 8) & 0xff00) + x;
  12.   int86(16,&rg, &rg);
  13. }
  14.  
  15. /* --------------- return the cursor position ------------------*/
  16. void curr_cursor( int *x, int *y)
  17. {
  18.   rg.x.ax = 0x0300;
  19.   rg.x.bx = 0;
  20.   int86(16, &rg, &rg);
  21.   *x = rg.h.dl;
  22.   *y = rg.h.dh;
  23. }
  24.  
  25. /* ----------------- set cursor type ----------------------------*/
  26. void set_cursor_type(int t)
  27. {
  28.   rg.x.ax = 0x0100;
  29.   rg.x.bx = 0;
  30.   rg.x.cx = t;
  31.   int86(16, &rg, &rg);
  32. }
  33.  
  34. char attrib=7;
  35.  
  36. /* ------------------ clear the screen ---------------------------*/
  37. void clear_screen()
  38. {
  39.   cursor(0,0);
  40.   rg.h.al = ' ';
  41.   rg.h.ah = 9;
  42.   rg.x.bx = attrib;
  43.   rg.x.cx = 2000;
  44.   int86(16, &rg, &rg);
  45. }
  46.  
  47.  
  48. /* -------------------- return the video mode ---------------------*/
  49. int vmode()
  50. {
  51.   rg.h.ah = 15;
  52.   int86(16, &rg, &rg);
  53.   return rg.h.al;
  54. }
  55.  
  56.  
  57.  
  58. /* --------------------- test for scroll lock ----------------------*/
  59. int scroll_lock()
  60. {
  61.   rg.x.ax = 0x0200;
  62.   int86(0x16, &rg, &rg);
  63.   return rg.h.al & 0x10;
  64. }
  65.  
  66.  
  67.  
  68. void (*helpfunc)();
  69. int helpkey=0;
  70. int helping=0;
  71.  
  72. /* ------------------------ get a keyboard character ---------------*/
  73. int get_char()
  74. {
  75.   int c;
  76.  
  77.   while (1) {
  78.       rg.h.ah = 1;
  79.         int86(0x16,&rg,&rg);
  80.         if (rg.x.flags & 0x40) {
  81.             int86(0x28, &rg, &rg);
  82.             continue;
  83.         }
  84.         rg.h.ah = 0;
  85.         int86(0x16,&rg,&rg);
  86.         if (rg.h.al==0)
  87.             c = rg.h.ah | 128;
  88.         else
  89.             c = rg.h.al;
  90.         if (c==helpkey && helpfunc) {
  91.             if(!helping) {
  92.                helping=1;
  93.                (*helpfunc)();
  94.                helping=0;
  95.                continue;
  96.             }
  97.         }
  98.         break;
  99.    }
  100.    return c;
  101. }
  102.  
  103.  
  104.